import java.util.Comparator;
import java.util.PriorityQueue;

//最小k个数问题 用大堆
class Solution {
    Comparator<Integer> comparator = new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2-o1;
        }
    };

    PriorityQueue<Integer> pq = new PriorityQueue<Integer>(4,comparator);
    //PriorityQueue<Integer> pq2 = new PriorityQueue<>(4,(a,b)->b-a);
    //匿名内部类lambda表达式写法！！！
    public int[] smallestK(int[] arr, int k) {
        if(arr==null||k==0){
            return new int[0];
        }
        for(int i=0;i<k;i++){
            pq.offer(arr[i]);
        }
        for(int j=k;j<arr.length;j++){
            if(arr[j]<pq.peek()){
                pq.poll();
                pq.offer(arr[j]);
            }
        }
        int[]res = new int[k];
        for(int x=0;x<k;x++){
            res[x]=pq.poll();
        }
        return res;

    }
}